/*
 * listaInvertida.h
 *
 *  Created on: 05/11/2013
 *      Author: Miguel
 */

#ifndef LISTAINVERTIDA_H_
#define LISTAINVERTIDA_H_

#include "../Types.h"
#include "Lista.h"
#include "HandlerDeTexto.h"
#include "Vocabulario.h"
#include "OcurrenciaDeTerminos.h"
#include "FrecuenciaDeTerminos.h"

#define ESPACIO ' '
#define FIN '\0'

#define TXT ".txt"
#define DIRECCION "Archivos de la lista/documentos/"

class ListaInvertida {
public:
	ListaInvertida(const String& nombre, int block_size);
	virtual ~ListaInvertida();

	String crearFrecuenciasFile(std::vector<int> listaDeIds);
	String crearListasFile(SecuentialFile<IDs>& frecuencias);

	void preparar();
	void cerrar();

	bool recuperarLista(BigInt idTerm, Lista& lista);
	void salvarNuevaLista(const Lista lista);
	void imprimirListas();

	void eliminarTemporales();
private:
	Lista lista;
	String nombre;

	String path_ordenado;

	SecuentialFile<Lista> file_listas; String path_listas;

	Vocabulario vocabulario;
	OcurrenciaDeTerminos OT;
	FrecuenciaDeTerminos FT;
};

#endif /* LISTAINVERTIDA_H_ */
